package com.dbms.parser;

/**
 * Token类型枚举，用于标识SQL语句中通过词法分析器解析出的不同单词（Token）的类别。
 * <p>
 * 每个枚举常量都代表一种特定的词法单元，这有助于语法分析器理解Token流的结构。
 */
public enum TokenType {
    /**
     * 关键字（如 CREATE, TABLE, SELECT 等）。
     * 这是SQL语言的保留字，具有特殊的语法含义。
     */
    KEYWORD,

    /**
     * 标识符（如表名、列名、用户名等）。
     * 通常由用户定义，用于命名数据库对象。
     */
    IDENTIFIER,

    /**
     * 常量（如数字 '123' 或字符串 'hello'）。
     * 表示固定的数据值。
     */
    CONSTANT,

    /**
     * 运算符（如 =, >, <, +, * 等）。
     * 用于执行比较、算术等操作。
     */
    OPERATOR,

    /**
     * 分隔符（如逗号, 分号, 括号等）。
     * 用于分隔语句、列表和表达式的各个部分。
     */
    DELIMITER,

    /**
     * 数据类型（如 INT, VARCHAR 等）。
     * 虽然也可以归类为关键字，但单独列出可以使解析过程更清晰，
     * 便于在创建表或定义列时进行类型检查。
     */
    TYPE,

    /**
     * 文件结束符（End Of File）。
     * 这是一个特殊的Token，表示输入流的结束。
     */
    EOF
}